package offer;


/**
 * @author ZhanBo
 * @date 2020/6/6
 */
public class Solution21 {

    public static void main(String[] args) {
        int [] array = {2,4,6};
        System.out.println(isEvenOrOdd(array,1));
        // System.out.println(Arrays.toString(exchange(array)));
    }

    /**
     *输入一个整数数组，实现一个函数来调整该数组中数字的顺序，使得所有奇数位于数组的前半部分，所有偶数位于数组的后半部分。
     * 输入：nums = [1,2,3,4]
     * 输出：[1,3,2,4]
     * 注：[3,1,2,4] 也是正确的答案之一。
     *
     * @param nums
     * @return
     */
    public static int[] exchange(int[] nums) {
        //奇数下标
        int oddIndex = 0 ;
        //偶数下标
        int evenIndex = nums.length -1;
        int temp = 0;
        while (oddIndex <evenIndex){
            //奇数下标一直移动，直到找到偶数
            while(oddIndex < evenIndex && (nums[oddIndex] & 1) == 1) {
                oddIndex++;
            }
            //偶数下标一直移动，直到找到奇数
            while(oddIndex < evenIndex && (nums[evenIndex] & 1) == 0) {
                evenIndex--;
            }
            //奇数和偶数位置进行交换
            temp = nums[oddIndex];
            nums[oddIndex] = nums[evenIndex];
            nums[evenIndex] = temp;
        }
        return nums;
    }


    /**
     * 判断数组是否全是偶数,或奇数
     * @param array
     * @param flag 1是否全是偶数， 0 是否全是奇数
     * @return
     */
    public static boolean isEvenOrOdd(int [] array , int flag){
        for (int item :array){
            if ((item & 1) == flag) {
                return false;
            }
        }
        return true;
    }
}
